/**
 * 实现一个缓存函数，如果有执行过的，就直接使用之前，不进行函数的调用了
 */

function add(a, b) {
  console.log("执行a+b", a + b);
  return a + b;
}

function memorize(fn) {
  const map = {};

  return function (...args) {
    const key = args.join("|");
    map[key] || (map[key] = fn(...args));
    return map[key];
  };
}

const mAdd = memorize(add);

console.log(mAdd(1, 2));
console.log(mAdd(1, 2));
console.log(mAdd(3, 2));
console.log(mAdd(3, 2));
